比特币又实现图灵完备了?BitVM论文讲了什么?
上周(2023年10月中旬)在Twitter上看到了BitVM的论文,《BitVM: Compute Anything on
Bitcoin》(《BitVM:在比特币完成任何计算》)。https://bitvm.org/bitvm.pdf 这个论文在比特币生态上得到了很大的关注。
如果有底层的计算机实现基础知识,理解这论文并不难。
论文的第一部分是描述了计算机的基本原理,即计算机完成的所有事件最终都是归结为几个简单的数字逻辑电路基本单元的计算,与、非、或,这三种门构建的逻辑计算。包括我们现在可以使用计算机完成各种复杂的操作,如看视频、写文档、购物……,都是这样。
有一种特殊的门,叫NAND门,中文叫“非与门”,中使用NAND门就可以用来构建所有的其他逻辑门。
上面这些都是基础的计算机知识,看不懂也不重要,你只需要知道,整个计算机世界就是靠这些“门”来设计出来的。
而比特币脚本引擎里有两个操作码,OP_NOT和OP_BOOLAND,再加上哈希锁,就可以设计出NAND门(非与门)。
而这就意味着,使用比特币脚本就可以实现任何计算问题,这就是所谓的图灵完备。也就可以基于比特币脚本来搭建一台“虚拟计算机”,这就是标题里VM这两个字母的意思。
(再次推荐学习下计算机的基础知识,对于理解区块链非常有帮助,《掌握计算机基础知识是区块链和数字货币世界的通行证》)
论文的第二大部分就是解释如何使用这两个操作码和哈希锁来实现各种计算问题,以及,为什么是正确的。
这些吧啦吧啦的,非常难看的懂。
我也看不懂,只能假装认为它是对的,然后按我的理解,我来科普下它是怎么工作的。
先来设定一个计算任务,并使用BitVM这套东西来设计成程序来执行,这个任务是:两个人(A和B)分别拿出1BTC的资金进行打赌,赌大小。
程序设计如下:
1.A和B分别将自己的1BTC充值进一个他们生成的2-2签名地址,要花费这个2-2地址里的资金,可以使用如下任一方法:
1)A和B同时提供签名;
2)A提供签名,以及提供一个“证明文件”,然后等待一定的挑战周期(比如10个区块),如果在挑战周期内,B没有发起有效的不同意见挑战,则A可以花费里面的币。
2.打赌的规则使用NAND门来设计,并且运行在链上,但运行的结果可供链上使用。我们可以视运行的结果是生成一个上述说的可供赎回UTXO的“证明文件”。
按我的理解,本质上BitVM实现的是在依据链外的特定信息,赎回链上特定的UTXO。外链的特定信息需要按BitVM约定好的方式编程,以生成可供链上使用的“证明文件”。
可供赎回的UTXO也需要设计成特殊的赎回脚本。
BitVM的这种模式,我判断至少要保证以下:
1.目前看来只能是两方参与,即只能搞一个2-2签名的地址,在链外可以设计成很复杂的程序,但链上一定是一个证明者和挑战证明者。
这个和闪电网络有点像。
2.在链上双方都必须在线,以防止挑战周期内自己不在场而导致不公平的结果。
这个和以太坊的合约账户区别还是非常大。
以太坊的合约账户是可以定义程序,这些程序可以托管以太坊币等链上资产,这些资产按代码规则进行运行。
以太坊的合约账户里的代码是真正运行在矿工节点里的。
期待BitVM给比特币带来一些新的应用场景,不过我觉得离真正有用的东西还是太远。
目前还只是一个白皮书,连模型都没有,也没有可供使用的高级编程语言,只能使用opcode来编程,相当于只能使用汇编吧,连C语言都还没有。